💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    02 Djoser Ninja 백엔드시작 | ✅ 편저: 코담 운영자

    Djoser + Django Ninja를 활용한 Django 백엔드 프로젝트 시작 방법 (디렉토리: codam, 설정 모듈: config)

    이 문서는 Cookiecutter를 사용하지 않고, 일반적인 방법으로 Django 프로젝트를 시작하고 디렉토리 구조를 codam + config 형식으로 구성하는 방법을 설명합니다.


    1. 가상환경 생성 및 Django 설치

    python -m venv venv
    source venv/bin/activate  # Windows는 venv\Scripts\activate
    pip install django
    

    2. Django 프로젝트 생성 (config 설정 디렉토리)

    django-admin startproject config codam
    
    • 이 명령은 codam/ 디렉토리 내에 Django 프로젝트의 설정을 config/ 폴더로 생성합니다.

    디렉토리 구조

    codam/
    ├── config/
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   ├── asgi.py
    │   └── wsgi.py
    ├── manage.py
    

    3. 개발 서버 실행 확인

    cd codam
    python manage.py runserver
    

    정상 실행되면 http://127.0.0.1:8000/ 에 Django 초기 화면이 출력됩니다.


    4. 주요 작업 요약

    항목 설명
    프로젝트 디렉토리 codam
    설정 모듈 config.settings
    앱 생성 예 python manage.py startapp accounts

    5. 설정 커스터마이징 체크리스트

    • ALLOWED_HOSTS 설정 (settings.py)
    • INSTALLED_APPS에 사용자 앱 추가
    • TIME_ZONE, LANGUAGE_CODE 변경
    • 데이터베이스 설정 (기본 SQLite 외 PostgreSQL 등)

    ✅ 정리

    • Django 기본 방식으로 프로젝트를 시작할 경우, codam/config 구조로 깔끔하게 구성 가능
    • 이후 Djoser, Django Ninja, REST Framework 등은 필요 시 추가로 구성

    🔒 Djoser + Django Ninja 연동 방법

    일반 Django 프로젝트에서 RESTful 인증 API 및 타입 안전 API 라우팅을 위해 Djoser + Django Ninja를 함께 구성하는 방법입니다.

    1. 필수 패키지 설치

    pip install djangorestframework djoser djangorestframework-simplejwt django-ninja
    

    2. config/settings.py 설정

    INSTALLED_APPS += [
        'rest_framework',
        'rest_framework.authtoken',
        'djoser',
    ]
    
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_simplejwt.authentication.JWTAuthentication',
        ),
    }
    
    from datetime import timedelta
    SIMPLE_JWT = {
        'ACCESS_TOKEN_LIFETIME': timedelta(minutes=30),
        'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
    }
    

    3. Djoser URL 설정 (config/urls.py)

    from django.contrib import admin
    from django.urls import path, include
    from api.api import api  # Django Ninja API
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('auth/', include('djoser.urls')),
        path('auth/', include('djoser.urls.jwt')),
        path('api/', api.urls),
    ]
    

    4. Django Ninja API 라우터 생성 (api/api.py)

    # codam/api/api.py
    from ninja import NinjaAPI
    from django.contrib.auth.models import User
    from pydantic import BaseModel
    
    api = NinjaAPI()
    
    class UserOut(BaseModel):
        id: int
        username: str
    
    @api.get("/users", response=list[UserOut])
    def list_users(request):
        return list(User.objects.all())
    

    필요 시 startapp api 명령으로 api 앱을 만들고 위 파일 구조를 구성하세요.


    🔐 테스트 URL 예시

    목적 URL
    회원가입 POST /auth/users/
    로그인 (JWT) POST /auth/jwt/create/
    사용자 목록 (Ninja API) GET /api/users

    ✅ 통합 구성 정리

    • Djoser는 인증 관련 URL/기능을 간단히 구현 가능
    • Django Ninja는 타입 기반 API 라우팅과 문서화를 지원
    • JWT를 통한 로그인 인증이 가능하며, React/Next.js 등의 프론트엔드와 연동하기 용이함

    다음 단계: Next.js 15 프론트엔드 설치 및 Django 연동 방법 안내로 이어집니다.

    TOP
    preload preload